#ifndef _OC_VolumeHeader_H__
#define _OC_VolumeHeader_H__

#include "VolumeOptions.h"
#include "OCMain/StringUtil.h"
#include "VolumeUtil.h"
#include "GridData.h"

namespace OCPP
{
    namespace Volume
    {
        class _volumeExport VolumeHeader
        {
        public:
            static String generateHeader(GridData& gridData,
                size_t bodyLength, int numComponent, int pixelDatatype,
            const VolumeOptions& options);

            void setSizeInMeters(float width, float height, float depth)
            {
                sizeInMeters = { width ,height ,depth };
            }

            void setSizeOfSource(int width, int height, int depth)
            {
                sizeOfSource = { width ,height ,depth };
            }

            void setExtent(float west, float south, float east, float north)
            {
                extents = { west ,south ,east ,north };
            }

            String getBytes(size_t bodyLength,int pixelDatatype = GL_UNSIGNED_BYTE);
        private:
            std::tuple<float, float, float, float> extents;
            std::tuple<float, float, float> sizeInMeters;
            std::tuple<int, int, int> sizeOfSource;
            int pixelFormat = GL_RGBA;
        };
    }
}



#endif // !_OC_VOLUME_OBJECT_H__



